<!-- 详情页 -->
<template>
  <div>
    <Nav-type></Nav-type>
    <!-- 主要内容区域 -->
    <section class="con">
      <!-- 导航路径区域 -->
      <div class="conPoin">
        <div class="conPoin">
          <a v-show="categoryView.category1Name">{{categoryView.category1Name}}</a>/
          <a v-show="categoryView.category2Name">{{categoryView.category2Name}}</a>/
          <a v-show="categoryView.category3Name">{{categoryView.category3Name}}</a>/
          <!-- <a>{{categoryView}}</a> -->
        </div>
      </div>
      <!-- 主要内容区域 -->
      <div class="mainCon">
        <!-- 左侧放大镜区域 -->
        <div class="previewWrap">
          <!--放大镜效果-->
          <zoom :skuImageList="skuImageList"></zoom>

          <!--下方的缩略图-->
          <image-list :skuImageList="skuImageList"></image-list>

        </div>
        <!-- 右侧选择区域布局 -->
        <div class="InfoWrap">
          <!-- 商品售卖信息 -->
          <div class="goodsDetail">
            <h3 class="InfoName">{{skuInfo.skuName}}</h3>
            <p class="news">{{skuInfo.skuDesc}}</p>
            <div class="priceArea">
              <div class="priceArea1">
                <div class="title">价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格</div>
                <div class="price">
                  <i>¥</i>
                  <em>{{skuInfo.price}}</em>
                  <span>降价通知</span>
                </div>
                <div class="remark">
                  <i>累计评价</i>
                  <em>{{skuInfo.price}}</em>
                </div>
              </div>
              <div class="priceArea2">
                <div class="title">
                  <i>促&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;销</i>
                </div>
                <div class="fixWidth">
                  <i class="red-bg">加价购</i>
                  <em class="t-gray">满999.00另加20.00元，或满1999.00另加30.00元，或满2999.00另加40.00元，即可在购物车换购热销商品</em>
                </div>
              </div>
            </div>
            <div class="support">
              <div class="supportArea">
                <div class="title">支&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;持</div>
                <div class="fixWidth">以旧换新，闲置手机回收 4G套餐超值抢 礼品购</div>
              </div>
              <div class="supportArea">
                <div class="title">配 送 至</div>
                <div class="fixWidth">广东省 深圳市 宝安区</div>
              </div>
            </div>
          </div>

          <div class="choose">
            <div class="chooseArea">
              <div class="choosed"></div>
              <dl v-for="(spuSaleAttr) in spuSaleAttrList"
                  :key="spuSaleAttr.id">
                <dt class="title">{{spuSaleAttr.saleAttrName}}</dt>
                <dd changepirce="0"
                    v-for="(spuSaleAttrValue,index) in spuSaleAttr.spuSaleAttrValueList"
                    :key="spuSaleAttrValue.id"
                    :class="{active:spuSaleAttrValue.isChecked==='1'}"
                    @click="changeChecked(spuSaleAttr,index)">{{spuSaleAttrValue.saleAttrValueName}}</dd>
              </dl>
            </div>

            <!-- 加入购物车上面的商品属性信息 -->
            <div class="cartWrap">
              <div class="controls">
                <!-- 输入框的blur事件，是失去焦点事件，只要添加了它，失去焦点就会触发这个事件
                但是不好，因为它不会去判断这次输入的数据和之前的数据是不是一样再触发

                输入框的change事件内部包含了失去焦点事件，当用户失去焦点的时候，也会选择性触发change事件
                触发这个事件的前提是当前这个数据，必须和之前的数据不一样，才能触发。否则不触发
                -->
                <input autocomplete="off"
                       class="itxt"
                       v-model="skuNum"
                       @change="skuNumChange" />
                <a class="plus"
                   @click="skuNum++">+</a>
                <a class="mins"
                   @click="skuNum<=1?skuNum=1:skuNum--">-</a>
              </div>
              <div class="add">
                <!-- 之前我们的跳转几乎都是点击直接跳转，因为我们在跳转之前不需要发请求
                比如从home去search  从search去详情，跳转时候不需要发请求，而是跳转过去后发请求拿数据
                
                而加入购物车不一样，当我们点击添加购物车的时候，我们得需要先发请求给后台，后台需要把这个
                购物车信息存储数据库，请求成功之后，会返回给我们信息。我们根据这个信息再去跳转
                否则，有可能后台添加数据库失败，而我们已经跳到下个页面，就出问题-->
                <a @click="addOrUpdateShopCart">加入购物车</a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>

    <!-- 内容详情页 -->
    <section class="productDetail">
      <aside class="aside">
        <div class="tabWraped">
          <h4 class="active">相关分类</h4>
          <h4>推荐品牌</h4>
        </div>
        <div class="tabContent">
          <div class="tab-pane active">
            <ul class="partList">
              <li>手机</li>
              <li>手机壳</li>
              <li>内存卡</li>
              <li>Iphone配件</li>
              <li>贴膜</li>
              <li>手机耳机</li>
              <li>移动电源</li>
              <li>平板电脑</li>
            </ul>
            <ul class="goodsList">
              <li>
                <div class="list-wrap">
                  <div class="p-img">
                    <img src="./images/part01.png" />
                  </div>
                  <div class="attr">Apple苹果iPhone 6s (A1699) </div>
                  <div class="price">
                    <em>¥</em>
                    <i>6088.00</i>
                  </div>
                  <div class="operate">
                    <a href="javascript:void(0);">加入购物车</a>
                  </div>
                </div>
              </li>
              <li>
                <div class="list-wrap">
                  <div class="p-img">
                    <img src="./images/part02.png" />
                  </div>
                  <div class="attr">
                    <em>Apple苹果iPhone 6s (A1699)</em>
                  </div>
                  <div class="price">
                    <strong>
                      <em>¥</em>
                      <i>6088.00</i>
                    </strong>
                  </div>
                  <div class="operate">
                    <a href="javascript:void(0);">加入购物车</a>
                  </div>
                </div>
              </li>
              <li>
                <div class="list-wrap">
                  <div class="p-img">
                    <img src="./images/part03.png" />
                  </div>
                  <div class="attr">
                    <em>Apple苹果iPhone 6s (A1699)</em>
                  </div>
                  <div class="price">
                    <strong>
                      <em>¥</em>
                      <i>6088.00</i>
                    </strong>
                  </div>
                  <div class="operate">
                    <a href="javascript:void(0);">加入购物车</a>
                  </div>
                </div>
              </li>
              <li>
                <div class="list-wrap">
                  <div class="p-img">
                    <img src="./images/part02.png" />
                  </div>
                  <div class="attr">
                    <em>Apple苹果iPhone 6s (A1699)</em>
                  </div>
                  <div class="price">
                    <strong>
                      <em>¥</em>
                      <i>6088.00</i>
                    </strong>
                  </div>
                  <div class="operate">
                    <a href="javascript:void(0);">加入购物车</a>
                  </div>
                </div>
              </li>
              <li>
                <div class="list-wrap">
                  <div class="p-img">
                    <img src="./images/part03.png" />
                  </div>
                  <div class="attr">
                    <em>Apple苹果iPhone 6s (A1699)</em>
                  </div>
                  <div class="price">
                    <strong>
                      <em>¥</em>
                      <i>6088.00</i>
                    </strong>
                  </div>
                  <div class="operate">
                    <a href="javascript:void(0);">加入购物车</a>
                  </div>
                </div>
              </li>
            </ul>
          </div>
          <div class="tab-pane">
            <p>推荐品牌</p>
          </div>
        </div>
      </aside>
      <div class="detail">
        <div class="fitting">
          <h4 class="kt">选择搭配</h4>
          <div class="good-suits">
            <div class="master">
              <img src="./images/l-m01.png" />
              <p>￥5299</p>
              <i>+</i>
            </div>
            <ul class="suits">
              <li class="suitsItem">
                <img src="./images/dp01.png" />
                <p>Feless费勒斯VR</p>
                <label>
                  <input type="checkbox"
                         value="39">
                  <span>39</span>
                </label>
              </li>
              <li class="suitsItem">
                <img src="./images/dp02.png" />
                <p>Feless费勒斯VR</p>
                <label>
                  <input type="checkbox"
                         value="50">
                  <span>50</span>
                </label>
              </li>
              <li class="suitsItem">
                <img src="./images/dp03.png" />
                <p>Feless费勒斯VR</p>
                <label>
                  <input type="checkbox"
                         value="59">
                  <span>59</span>
                </label>
              </li>
              <li class="suitsItem">
                <img src="./images/dp04.png" />
                <p>Feless费勒斯VR</p>
                <label>
                  <input type="checkbox"
                         value="99">
                  <span>99</span>
                </label>
              </li>
            </ul>
            <div class="result">
              <div class="num">已选购0件商品</div>
              <div class="price-tit">
                套餐价
              </div>
              <div class="price">￥5299</div>
              <button class="addshopcar">加入购物车</button>
            </div>
          </div>
        </div>
        <div class="intro">
          <ul class="tab-wraped">
            <li class="active">
              <a href="###">
                商品介绍
              </a>
            </li>
            <li>
              <a href="###">
                规格与包装
              </a>
            </li>
            <li>
              <a href="###">
                售后保障
              </a>
            </li>
            <li>
              <a href="###">
                商品评价
              </a>
            </li>
            <li>
              <a href="###">
                手机社区
              </a>
            </li>
          </ul>
          <div class="tab-content">
            <div id="one"
                 class="tab-pane active">
              <ul class="goods-intro">
                <li>分辨率：1920*1080(FHD)</li>
                <li>后置摄像头：1200万像素</li>
                <li>前置摄像头：500万像素</li>
                <li>核 数：其他</li>
                <li>频 率：以官网信息为准</li>
                <li>品牌： Apple</li>
                <li>商品名称：APPLEiPhone 6s Plus</li>
                <li>商品编号：1861098</li>
                <li>商品毛重：0.51kg</li>
                <li>商品产地：中国大陆</li>
                <li>热点：指纹识别，Apple Pay，金属机身，拍照神器</li>
                <li>系统：苹果（IOS）</li>
                <li>像素：1000-1600万</li>
                <li>机身内存：64GB</li>
              </ul>
              <div class="intro-detail">
                <img src="./images/intro01.png" />
                <img src="./images/intro02.png" />
                <img src="./images/intro03.png" />
              </div>
            </div>
            <div id="two"
                 class="tab-pane">
              <p>规格与包装</p>
            </div>
            <div id="three"
                 class="tab-pane">
              <p>售后保障</p>
            </div>
            <div id="four"
                 class="tab-pane">
              <p>商品评价</p>
            </div>
            <div id="five"
                 class="tab-pane">
              <p>手机社区</p>
            </div>
          </div>
        </div>
      </div>
    </section>

  </div>
</template>

<script>
import { mapGetters } from "vuex"
import ImageList from "./ImageList/ImageList.vue"
import Zoom from "./Zoom/Zoom.vue"

export default {
  data () {
    return {
      // 购物车库存件数
      skuNum: 1,
    }
  },
  components: {
    ImageList,
    Zoom
  },
  computed: {
    // 1.使用助手函数
    ...mapGetters(['categoryView', 'skuInfo', 'spuSaleAttrList']),
    // 2.给子组件zoom和ImageList的数据
    skuImageList () {
      // 如果数据没有回来，skuInfo是个空对象,this.skuInfo.skuImageList就是undefined
      return this.skuInfo.skuImageList || []
    },

  },
  methods: {
    // 1.改变售卖属性的选中状态(使用排他思想)
    changeChecked (spuSaleAttr, index) {
      // console.log(spuSaleAttr, index);
      // 数组里面的选项isChecked都不选中
      spuSaleAttr.spuSaleAttrValueList.forEach((item, index) => {
        // console.log(item, index);
        item.isChecked = '0'
      });
      // 只有点击的那个选项才选中
      // console.log(spuSaleAttr.spuSaleAttrValueList[index], index);
      spuSaleAttr.spuSaleAttrValueList[index].isChecked = '1'
    },
    // 2.skuNum库存件数改变事件
    skuNumChange ($event) {
      // $event.target.value >= 1 ? skuNum = $event.target.value : skuNum = 1
      // "1我爱你" * 1 是NaN 
      let value = $event.target.value * 1
      // value是字符串或者小于1
      if (isNaN(value) || value < 1) {
        this.skuNum = 1
      } else {
        // 正常大于一：但是可能是个小数
        this.skuNum = parseInt(value)
      }
    },
    //3.点击或者更新购物车事件
    async addOrUpdateShopCart () {
      /* 
      1.发请求--将产品加入到数据库
      2.服务器存储成功---路由跳转
      3.失败，给用户进行提示
      */
      //  一.再点击加入购物车之前，做的第一件事情：就是将参数带给服务器(发请求),通知服务器加入购物车的产品是谁
      // await this.$store.dispatch("addOrUpdateShopCart", { skuNum: this.skuNum, skuId: this.$route.params.skuid })
      // 二.你需要知道这次请求是否成功还是失败，如果成功进行路由跳转，如果失败，需要给用户提示
      try {
        await this.$store.dispatch("addOrUpdateShopCart", { skuNum: this.skuNum, skuId: this.$route.params.skuid })
        // 成功
        // 三.路由跳转，路由传参
        // 3.1 本来可以通过这种query的方式将需要的参数带过去，但是skuInfo是对象，它在地址栏里面的显示看不到参数
        // 3.2 使用回话存储技术:一般存储的就是字符串
        sessionStorage.setItem("SKUINFO", JSON.stringify(this.skuInfo))
        this.$router.push({
          name: 'addCartSuccess', query: {
            skuNum: this.skuNum,
            // skuInfo: this.skuInfo
          }
        })
      } catch (error) {
        // 失败
        alert(error.message)
      }
    }

  },
  //生命周期 - 创建完成（访问当前this实例）
  created () {

  },
  //生命周期 - 挂载完成（访问DOM元素）
  mounted () {
    // console.log(this.$route.params.skuid);
    this.$store.dispatch('getDetailList', this.$route.params.skuid);
  }
}
</script>
<style lang="less" scoped>
.con {
  width: 1200px;
  margin: 15px auto 0;

  .conPoin {
    padding: 9px 15px 9px 0;

    & > span + span:before {
      content: "/\00a0";
      padding: 0 5px;
      color: #ccc;
    }
  }

  .mainCon {
    overflow: hidden;
    margin: 5px 0 15px;

    .previewWrap {
      float: left;
      width: 400px;
      position: relative;
    }

    .InfoWrap {
      width: 700px;
      float: right;

      .InfoName {
        font-size: 14px;
        line-height: 21px;
        margin-top: 15px;
      }

      .news {
        color: #e12228;
        margin-top: 15px;
      }

      .priceArea {
        background: #fee9eb;
        padding: 7px;
        margin: 13px 0;

        .priceArea1 {
          overflow: hidden;
          line-height: 28px;
          margin-top: 10px;

          .title {
            float: left;
            margin-right: 15px;
          }

          .price {
            float: left;
            color: #c81623;

            i {
              font-size: 16px;
            }

            em {
              font-size: 24px;
              font-weight: 700;
            }

            span {
              font-size: 12px;
            }
          }

          .remark {
            float: right;
          }
        }

        .priceArea2 {
          overflow: hidden;
          line-height: 28px;
          margin-top: 10px;

          .title {
            margin-right: 15px;
            float: left;
          }

          .fixWidth {
            width: 520px;
            float: left;

            .red-bg {
              background: #c81623;
              color: #fff;
              padding: 3px;
            }

            .t-gray {
              color: #999;
            }
          }
        }
      }

      .support {
        border-bottom: 1px solid #ededed;
        padding-bottom: 5px;

        .supportArea {
          overflow: hidden;
          line-height: 28px;
          margin-top: 10px;

          .title {
            margin-right: 15px;
            float: left;
          }

          .fixWidth {
            width: 520px;
            float: left;
            color: #999;
          }
        }
      }

      .choose {
        .chooseArea {
          overflow: hidden;
          line-height: 28px;
          margin-top: 10px;

          dl {
            overflow: hidden;
            margin: 13px 0;

            dt {
              margin-right: 15px;
              float: left;
            }

            dd {
              float: left;
              margin-right: 5px;
              color: #666;
              line-height: 24px;
              padding: 2px 14px;
              border-top: 1px solid #eee;
              border-right: 1px solid #bbb;
              border-bottom: 1px solid #bbb;
              border-left: 1px solid #eee;

              &.active {
                color: green;
                border: 1px solid green;
              }
            }
          }
        }

        .cartWrap {
          .controls {
            width: 48px;
            position: relative;
            float: left;
            margin-right: 15px;

            .itxt {
              width: 38px;
              height: 37px;
              border: 1px solid #ddd;
              color: #555;
              float: left;
              border-right: 0;
              text-align: center;
            }

            .plus,
            .mins {
              width: 15px;
              text-align: center;
              height: 17px;
              line-height: 17px;
              background: #f1f1f1;
              color: #666;
              position: absolute;
              right: -8px;
              border: 1px solid #ccc;
            }

            .mins {
              right: -8px;
              top: 19px;
              border-top: 0;
            }

            .plus {
              right: -8px;
            }
          }

          .add {
            float: left;

            a {
              background-color: #e1251b;
              padding: 0 25px;
              font-size: 16px;
              color: #fff;
              height: 36px;
              line-height: 36px;
              display: block;
            }
          }
        }
      }
    }
  }
}

.productDetail {
  width: 1200px;
  margin: 30px auto 0;
  overflow: hidden;

  .aside {
    width: 210px;
    float: left;
    border: 1px solid #ccc;

    .tabWraped {
      height: 40px;

      h4 {
        border-top: 3px solid #fff;
        float: left;
        line-height: 37px;
        width: 105px;
        text-align: center;
        border-bottom: 1px solid #ccc;

        &.active {
          border-top: 3px solid #e1251b;
          border-bottom: 0;
          font-weight: normal;
        }
      }
    }

    .tabContent {
      padding: 10px;

      .tab-pane {
        display: none;

        &.active {
          display: block;
        }

        &:nth-child(1) {
          .partList {
            overflow: hidden;

            li {
              width: 50%;
              float: left;
              border-bottom: 1px dashed #ededed;
              line-height: 28px;
            }
          }

          .goodsList {
            & > li {
              margin: 5px 0 15px;
              border-bottom: 1px solid #ededed;
              padding-bottom: 5px;

              .list-wrap {
                .p-img {
                  text-align: center;

                  img {
                    width: 152px;
                  }
                }

                .price {
                  font-size: 16px;
                  color: #c81623;
                }

                .operate {
                  text-align: center;
                  margin: 5px 0;

                  a {
                    background-color: transparent;
                    border: 1px solid #8c8c8c;
                    color: #8c8c8c;
                    display: inline-block;
                    padding: 2px 14px;
                    line-height: 18px;
                  }
                }
              }
            }
          }
        }
      }
    }
  }

  .detail {
    width: 980px;
    float: right;

    .fitting {
      border: 1px solid #ddd;
      margin-bottom: 15px;

      .kt {
        border-bottom: 1px solid #ddd;
        background: #f1f1f1;
        color: #333;
        padding: 5px 0 5px 15px;
      }

      .good-suits {
        height: 170px;
        padding-top: 10px;

        .master {
          width: 127px;
          height: 165px;
          text-align: center;
          position: relative;
          float: left;

          img {
            width: 87px;
          }

          p {
            color: #c81623;
            font-size: 16px;
            font-weight: 700;
          }

          i {
            position: absolute;
            top: 48px;
            right: -25px;
            font-size: 16px;
          }
        }

        .suits {
          width: 668px;
          height: 165px;
          float: left;

          .suitsItem {
            float: left;
            width: 127px;
            padding: 0 20px;
            text-align: center;

            img {
              width: 120px;
              height: 130px;
            }

            p {
              font-size: 12px;
            }

            label {
              display: block;
              position: relative;

              input {
                vertical-align: middle;
              }

              span {
                vertical-align: middle;
              }
            }
          }
        }

        .result {
          border-left: 1px solid #ddd;
          width: 153px;
          height: 165px;
          padding-left: 20px;
          float: left;

          .num {
            font-size: 14px;
            margin-bottom: 10px;
            margin-top: 10px;
          }

          .price-tit {
            font-weight: bold;
            margin-bottom: 10px;
          }

          .price {
            color: #b1191a;
            font-size: 16px;
            margin-bottom: 10px;
          }

          .addshopcar {
            background-color: #e1251b;
            border: 1px solid #e1251b;
            padding: 10px 25px;
            font-size: 16px;
            color: #fff;
            display: inline-block;
            box-sizing: border-box;
          }
        }
      }
    }

    .intro {
      .tab-wraped {
        background: #ededed;
        // border: 1px solid #ddd;
        overflow: hidden;

        li {
          float: left;

          & + li > a {
            border-left: 1px solid #ddd;
          }

          &.active {
            a {
              // border: 0;
              background: #e1251b;
              color: #fff;
            }
          }

          a {
            display: block;
            height: 40px;
            line-height: 40px;
            padding: 0 11px;
            text-align: center;
            color: #666;
            background: #fcfcfc;
            border-top: 1px solid #ddd;
            border-bottom: 1px solid #ddd;
          }
        }
      }

      .tab-content {
        .tab-pane {
          display: none;

          &.active {
            display: block;
          }

          &:nth-child(1) {
            .goods-intro {
              padding-left: 10px;

              li {
                margin: 10px 0;
              }
            }

            .intro-detail {
              img {
                width: 100%;
              }
            }
          }
        }
      }
    }
  }
}
</style>